package sv.ues.fia.fragmentcontrol;

import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;
import sv.ues.fia.R;
import sv.ues.fia.bdcontrol.ControlBDHelper;
import sv.ues.fia.clases.SearchListItem;
import sv.ues.fia.clases.SearchListItemAdapter;
import sv.ues.fia.entity.Integrante;
import sv.ues.fia.entity.TrabajoGraduacion;
import sv.ues.fia.entity.Asistencia;
import sv.ues.fia.entity.Asesoria;

public class AsistenciaFragment extends Fragment {

	public int currentPage;
	/** DECLARAR AQUI LOS OBJETOS VIEW **/
	public ListView lvResultAsistencia;
	public List<Asistencia> listResultAsistencia;
	public List<SearchListItem> listItemsResult;
	public SearchListItemAdapter adapter;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		/** Getting the arguments to the Bundle object */
		Bundle data = getArguments();

		/** Getting integer data of the key current_page from the bundle */
		currentPage = data.getInt("current_page", 0);
		listResultAsistencia = new ArrayList<Asistencia>();
		listItemsResult = new ArrayList<SearchListItem>();

	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View v = null;
		
		/** PAGINA 1 **/
		if (currentPage == 1) {
			
			// Cargar LAYOUT de la Pagina 1
			v = inflater.inflate(R.layout.activity_asistencia_insertar, container, false);// implementar

			final ControlBDHelper db = new ControlBDHelper(this.getActivity());
			
			// Listas para los espinner
			List<TrabajoGraduacion> listTG = new ArrayList<TrabajoGraduacion>();
			List<Integrante> listIntegrante = new ArrayList<Integrante>();
			List<Asesoria> listAsesoria = new ArrayList<Asesoria>();

			Button btnSave = (Button) v.findViewById(R.id.btnSaveAsistencia);					
			final Spinner idIntegrante = (Spinner) v.findViewById(R.id.spIdAlumnoAsis);
			final Spinner idTG = (Spinner) v.findViewById(R.id.spIdTGAsis);
			final Spinner idAsesoria= (Spinner) v.findViewById(R.id.spIdAsesoriaAsis);
			final CheckBox cbxEstadoAsis = (CheckBox) v.findViewById(R.id.cbxAsis);
			//final DatePicker dateRev = (DatePicker) v.findViewById(R.id.dateRevision);
			final EditText edtObservAsis = (EditText) v.findViewById(R.id.edtOnbservAsis);

			
			/** CONSULTAR BD PARA LLENAR ESPINNERS **/
			db.abrir();
			listTG= db.consultarTG("","");
			listIntegrante = db.consultarIntegrante("", "");
			listAsesoria = db.consultarAsesoria("","");
			db.cerrar();

			ArrayAdapter<TrabajoGraduacion> spinnerTGAdapter = new ArrayAdapter<TrabajoGraduacion>(
					getActivity(),
					android.R.layout.simple_spinner_dropdown_item, listTG);
			idTG.setAdapter(spinnerTGAdapter);
			
			ArrayAdapter<Integrante> spinnerIntegranteAdapter = new ArrayAdapter<Integrante>(
					getActivity(),
					android.R.layout.simple_spinner_dropdown_item, listIntegrante);
			idIntegrante.setAdapter(spinnerIntegranteAdapter);
			
			ArrayAdapter<Asesoria> spinnerAsesoriaAdapter = new ArrayAdapter<Asesoria>(
					getActivity(),
					android.R.layout.simple_spinner_dropdown_item, listAsesoria);
			idAsesoria.setAdapter(spinnerAsesoriaAdapter);
			

			
			/** ACCION DEL BOTON INSERTAR NUEVO REGISTRO **/
			btnSave.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View v) {

//					int day = dateRev.getDayOfMonth();
//					int month = dateRev.getMonth();
//					int year = dateRev.getYear();
//
//					String formatedDate = MyDateFormat.formatDate(year, month, day);

					TrabajoGraduacion selectedTG = (TrabajoGraduacion) idTG.getSelectedItem();
					Integrante selectedIntegrante = (Integrante) idIntegrante.getSelectedItem();
					Asesoria selectedAsesoria = (Asesoria) idAsesoria.getSelectedItem();
					
					Asistencia newAsistencia= new Asistencia();
					
				
					newAsistencia.setIdTG(selectedTG.getIdTG());
					newAsistencia.setIdCarne(selectedIntegrante.getIdCarne());
					newAsistencia.setIdAsesoria(selectedAsesoria.getIdAsesoria());// manejo de asesoria
					newAsistencia.setEstadoAsistencia(cbxEstadoAsis.isChecked());
					newAsistencia.setDescripAsistencia(edtObservAsis.getText().toString());
				
					db.abrir();
					Toast.makeText(getActivity(), db.insertar(newAsistencia),
							Toast.LENGTH_LONG).show();
					db.cerrar();

				}
			});
			
		/** PAGINA 2 **/
		} else if (currentPage == 2) {
			
			final ControlBDHelper db = new ControlBDHelper(getActivity());
			
			// Cargar LAYOUT de la Pagina 2
			v = inflater.inflate(R.layout.activity_asistencia_buscar, container,false);

			lvResultAsistencia= (ListView) v.findViewById(R.id.ListResultAsistencia);//id r en loyout
			
			final EditText edtIdTG =(EditText) v.findViewById(R.id.edtIdTGAsis);
			final EditText edtIdIntegrante = (EditText) v.findViewById(R.id.edtIdIntegranteAsis);
			final EditText edtIdAsesoria = (EditText) v.findViewById(R.id.edtIdAsesoriaAsis);// le pondre alumno para probar
			
			ListView search = (ListView) v.findViewById(R.id.listOptionSearch);
			
			/** LISTENER DEL BOTON BUSCAR **/
			search.setOnItemClickListener(new OnItemClickListener() {

				@Override
				public void onItemClick(AdapterView<?> arg0, View arg1,
						int arg2, long arg3) {	
					
					/** CONSULTAR LISTADO DE PERFILES SEGUN ID O NOMBRE **/
					db.abrir();					
					listResultAsistencia = db.consultarAsistencia(
							edtIdTG.getText().toString()
							,edtIdIntegrante.getText().toString()
							,edtIdAsesoria.getText().toString()
							);					
					db.cerrar();
					
					/** VACIAR RESULTADOS ANTES DE AGREGAR LOS NUEVOS **/
					listItemsResult.clear();
					
					/** LLENAR OTRA LISTA SOLO PARA AGREGARLO AL LISTVIEW **/
					for(Asistencia x: listResultAsistencia){
						
						SearchListItem item = new SearchListItem();
						
						// Se le asigna un TITULO
						item.setTitle(getActivity().getString(R.string.idIntegrante)+" "+String.valueOf(x.getIdCarne()));
						
						// Se le asigna un SUBTITULO
						item.setSubTitle(getActivity().getString(R.string.idTG)+" "+x.getIdTG());
								//+"\n"+getActivity().getString(R.string.idAsesoriaForm)+" "x.getIdAsesoria());
						listItemsResult.add(item);						
					}
					
					adapter.notifyDataSetChanged();
					
				}

			});
			
			/** SE CREA EL ADAPTER PERSONALIZADO PARA EL LISTVIEW **/
			adapter = new SearchListItemAdapter(this.getActivity(),
					listItemsResult);

			lvResultAsistencia.setAdapter(adapter);

			this.getActivity().registerForContextMenu(lvResultAsistencia);

		}
		return v;
	}

}
